cmake_minimum_required(VERSION 3.1.0)

file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

# 设置编译输出路径
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)


# 设置默认构建类型为 Release，如果没有指定其他类型
if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release)
endif()

# 添加调试模式的编译选项
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")

# 添加 Release 模式的优化选项
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3")

set(TargetName main_node)

# 项目名称和版本
project(${TargetName} VERSION 1.0)

# 设置 C++17 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)

find_package(PkgConfig REQUIRED)
# 需要安装
find_package(nlohmann_json 3.2.0 REQUIRED)
include_directories(./include)

# 定义SRC变量，其值为当前目录下所有的源代码文件
aux_source_directory(. SRC)

# 添加可执行文件
add_executable(${TargetName} ${SRC})

add_compile_options(-Wall) # -fpermissive 避免不严格的代码通过

# Windows 特定设置
if(WIN32)
    # 添加 Windows 特定的库和设置
    target_compile_definitions(${TargetName} PRIVATE WIN32_LEAN_AND_MEAN)
    target_link_libraries(${TargetName} PRIVATE kernel32 user32 PRIVATE nlohmann_json::nlohmann_json)
else()
    # Unix/Linux 特定设置
    target_compile_definitions(${TargetName} PRIVATE _GNU_SOURCE )
    target_link_libraries(${TargetName} PRIVATE pthread PRIVATE nlohmann_json::nlohmann_json)
endif()



# 安装目标
install(TARGETS ${TargetName}  DESTINATION bin)

# 可选：设置 CMake 安装时的配置
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/install")








